<?php
namespace Api\Controller;
use Think\Controller;
use Think\Vender;
class NottifyController extends BaseController{
		public function index(){
			echo 'index';
		}
		public function notify(){

		$xml = file_get_contents('php://input');//php://input是一个只读信息流，当请求方式是post的，并且enctype不等于”multipart/form-data”时，可以使用php://input来获取原始请求的数据。
        libxml_disable_entity_loader(true);
        $data = json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA));
        $data = json_decode($data,true);
		 //返回给微信服务器通知的数组
		 $replyData['return_msg'] = "";
	     $replyData['return_code'] = $data['return_code'];
		//商户系统对于支付结果通知的内容一定要做签名验证,并校验返回的订单金额是否与商户侧的订单金额一致
		//数组包含微信服务器发送过来的签名进行验证

		if($this->checkSign($data)){ 	//验证签名
			if(strtolower($data['result_code']) == 'success' && strtolower($data['return_code']) == 'success'){      //return_code 返回状态码 result_code业务结果
				//$data里包含了在jsapi下单时out_trade_no的商户自定义订单与total_fee金额，通过订单查询数据库商品的金额 进行判断 这里测试目前写死
				$sum=0;
				$pr=M('ad_order')->field('price')->where(['order_no'=>$data['out_trade_no']])->select();
				foreach ($pr as $key => $value) {
					$sum+=intval($pr[$key]['price']);
				}
				if($data['total_fee'] == $sum){	//验证金额
					 $replyData['return_msg'] = "OK";
					 $datas['state']=1;
					 $datas['transaction_id']=$data['transaction_id']; //支付成功之后 微信返回一个微信订单号 与商户订单号不同的是 在同一个商户下商户订单是唯一的
					 M('ad_order')->where(['order_no'=>$data['out_trade_no']])->save($datas);
				}
				
			}else{
				$datas['state']=4;
				M('ad_order')->where(['order_no'=>'15302724939814'])->save($datas);
			}
		}else{
			$datas['state']=2;
			M('ad_order')->where(['order_no'=>'15302724939814'])->save($datas);
		}
		echo $this->arrayToXml($replyData); 
	}
}